package JavaSE.CODE.AnnotationReflection;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

public class DIYAnno {

    //有参数的注解建议带括号，如果注解中的参数都有默认值，则可以不传入
    @MyAnnotation1(age=19,schools={"",""})
    public void test(){};

    //如果注解只有一个参数，且参数名为value，则传递参数时可以不用加参数名
    @MyAnnotation2("abc")
    public void test1(){};
}

@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation1{
    //注解的参数：参数类型+方法名+（）
    int age() default 1;
    int id() default -1;//通常-1代表不存在
    String[] schools() default {"abc","def"};
}

@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation2{
    String value();
}

